In a distributed computing environment, work can be performed on multiple computing entities, often referred to as “nodes.” In the context of distributed computing, the term “work” refers to any processing of data. One example of a node is a computer system on which one or more processes or threads may execute. Nodes in a distributed computing environment are typically communicatively coupled, for example via a network, to allow processes on nodes to access resources on other nodes. In a hardware context, a resource is generally a device such as a printer, disk drive or memory. In a software context, a resource is generally an item of data or a routine.
An important concern in distributed computing is how to provide communication between processes on different nodes to ensure that work is completed in an orderly and efficient manner. Two such prior approaches include the direct communication architecture and the managed communication architecture.